---
title: Required Versions
sidebar_label: require
---

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import ConfigPartialRequire from '../_partials/v2beta1/require.mdx'

DevSpace allows you to define certain requirements that must be met to use DevSpace for a certain project. This is useful if you want to ensure that all developers that use DevSpace in a project have a certain DevSpace version, specific plugins or commands installed. You can define one or multiple of:

- **DevSpace Version** (`require.devspace`): You can define a required DevSpace version 
- **Installed Plugins** (`require.plugins`): You can define required plugins and their version
- **Installed Commands** (`require.commands`): You can define arbitrary commands such as `kubectl` or `helm` that need to be present locally in a specific version or range

Requirements are defined in the `require` section of the `devspace.yaml`.

<Tabs
    defaultValue="devspace"
    values={[        
        { label: 'DevSpace Version', value: 'devspace', },
        { label: 'Plugins', value: 'plugins', },
        { label: 'Commands', value: 'commands', },
    ]
    }>
<TabItem value="devspace">

```yaml
# You can either specify an exact version or a version range or even
# multiple versions.
require: 
  devspace: '>= 4.0, < 6.0'
```

</TabItem>
<TabItem value="plugins">

```yaml
# Each plugin that is defined under plugins needs to be installed 
# in the required version.
require:
  plugins:
  - name: loft
    version: ">= 1.11.0"
```

</TabItem>
<TabItem value="commands">

```yaml
require:
  # By default devspace will try to call the command 'NAME version' 
  # and use the regex '(v\\d+\\.\\d+\\.\\d+)' to find the version
  commands:
  - name: helm
    version: '> 3.0.0'
  - name: my-custom-command
    # Override the default args
    versionArgs: ["--version"]
    # Override the default reg ex
    versionRegEx: "Version: (v?\\d+\\.\\d+\\.\\d+)"
    version: '4.6.7'
```

</TabItem>
</Tabs>

## Configuration

<ConfigPartialRequire/>
